package com.gestion.controller;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.gestion.business.UsuarioBo;
import com.gestion.domain.Usuario;
import com.gestion.exception.UsuarioInexistenteException;

@Controller
public class UsuarioController {
	/**
	 * Logger.
	 */
	private static Logger logger = Logger.getLogger(UsuarioController.class); 

	public static final String FORWARD_LOGIN = "login";
	public static final String FORWARD_LOGIN_SUCCESS = "menu";
	public static final String ATRIBUTO_USUARIO = "usuario";

	@Autowired
	private UsuarioBo usuarioBo;

	@RequestMapping(value = "/index", method = RequestMethod.GET)
	public String login(ModelAndView modelAndView) {
		Usuario usuario = new Usuario();
		modelAndView.addObject("usuario", usuario);

		return FORWARD_LOGIN;
	}

	@RequestMapping(value = "/loginUsuario", method = RequestMethod.POST)
	public String buscarUsuarioPorNombre(@ModelAttribute Usuario usuario,
			ModelAndView modelAndView) throws UsuarioInexistenteException {
		
		logger.info("Usuario y Password ingresados a validar.");
		logger.info("Nombre:" + usuario.getNombre());
		logger.info("Password:" + usuario.getNombre());
		
		Usuario usuarioBusqueda = null;
		try {
			usuarioBusqueda = getUsuarioBo().buscarUsuarioPorNombre(
					usuario.getNombre());
			modelAndView.addObject(ATRIBUTO_USUARIO, usuarioBusqueda);

		} catch (UsuarioInexistenteException e) {
			return FORWARD_LOGIN;
		} catch (Exception e) {
			return FORWARD_LOGIN;
		}

		return FORWARD_LOGIN_SUCCESS;
	}

	/**
	 * @return the usuarioBo
	 */
	public UsuarioBo getUsuarioBo() {
		return usuarioBo;
	}

	/**
	 * @param usuarioBo
	 *            the usuarioBo to set
	 */
	public void setUsuarioBo(UsuarioBo usuarioBo) {
		this.usuarioBo = usuarioBo;
	}

}
